1. Field of the Invention
This invention relates generally to automated test instrument systems, and more specifically, to a method for increasing the resolution of a fault dictionary used by an automated test instrument to functionally test a digital circuit board.
2. Statement of the Problem
Testing of complex digital circuits generally requires the use of computer controlled test instruments, often referred to as automated test equipment ("ATE"). A number of methods have been used to test digital circuit boards, including in-circuit testing and functional testing. In-circuit testing is a method of testing one specific device at a time in the UUT. One type of in-circuit testing uses a mechanically complex "bed-of-nails" fixture to provide electrical access to each pin on each device of the circuit being tested (called a "unit under test", or "UUT"). As VLSI technology advances, circuit board component density increases as more devices are embedded in a single package. In-circuit testing thus becomes more difficult, due to the difficulty of access to large pin-counts per device, and the lack of direct accessibility of the embedded devices.
Functional testing is a method of testing the performance of a UUT without accessing internal nodes. Circuit board-level functional testing requires that the test instrument have access to only the same pins (primary input and/or output pins) that are used for external connection to the circuit board during its normal operation. Under functional test, the circuit board is connected to the test instrument in the same manner as it would be connected to associated circuitry in normal use, typically via edge connectors. Therefore, the physical/electrical access required for functional testing is much simpler than that required for in-circuit testing. However, the observability of a given device in a UUT has been accordingly limited because direct access to each device internal to the UUT is unavailable.
One type of functional testing uses a "fault dictionary" to diagnose a failed (faulty) device in a UUT. A set of signals is applied to the primary inputs of the UUT and the corresponding signals are observed at the UUT's primary outputs. Any observed outputs potentially indicative of a failed device in the UUT are looked up in the fault dictionary to determine whether they are symptomatic of a fault listed in the dictionary. In many cases, a number of potential faults are found in the dictionary which correspond to a given set of observed outputs. Historically, it is this greater than one-to-one correspondence between potential faults and actual faults (i.e., poor resolution) which has been the major drawback to use of the fault dictionary.
Another type of functional testing uses a guided probe (generally hand held) to access nodes in the UUT which help verify the fault or at least narrow the scope of testing. These two types of functional testing are sometimes combined, i.e., a guided probe may be used to locate the failed device from a list of possible failed devices resulting from a fault dictionary analysis.
In order to generate the raw data for a fault dictionary, fault simulation was developed. Fault simulation is an offshoot of normal, or "good," circuit simulation, wherein the logical behavior of a properly operating circuit is modeled in a computer. Unlike "good" circuit simulation, fault simulation predicts the behavior of a circuit containing a failed device. Before fault simulation can take place, a list of possible (preferably probable) faults is determined, typically, by a test engineer. Next, these preselected faults are then introduced, via a computer fault simulator, into a computer simulation of the circuit. The fault simulator then records the resulting circuit behavior for each fault in terms of primary output signals resulting from a set of sequentially applied input signals, called test vectors. Each test vector has a number which corresponds to the rank of its application to a UUT. The primary output signals are typically those which are output via the edge connectors on a circuit board.
If the effects of a test vector applied to a circuit containing a fault propagate through the circuit to a primary output pin, then the fault is said to be detected. A fault that causes a predictable output at a primary output is called a "hard" detection, and a fault which causes an unpredictable output at a primary output pin is called a "possible" or "potential" detection. Unpredictable outputs exist because the output of a circuit depends upon the state of initialization of each device involved in a given signal path. In many cases, a fault prevents a circuit from properly initializing. Thus, whether or not the fault is detected may depend upon various initial device states when the UUT is powered up. Therefore, a "possible detection" occurs when more than one possible output may result from application of a given test vector.
A fault dictionary contains a list of symptoms observable at certain primary outputs of a UUT, given a specified test vector input sequence, and a specified failed (faulty) device. A fault dictionary consists of three elements: a list of fault syndromes, a list of corresponding failed devices (including pin numbers), and a mapping from the former to the latter. A fault syndrome is a failure symptom corresponding to a primary output from a UUT, which output is potentially symptomatic of a failed device in the UUT. A given fault syndrome consists of a specific failing vector number (the number of the applied vector during which execution thereof a failure occurred) and list of corresponding primary outputs. Each fault in the fault list for a particular fault syndrome contains a specific device along with a list of device pins potentially responsible for the failure corresponding to the fault syndrome. Both types of faults--"hard detections" and "possible detections", are typically represented in a fault dictionary.
Traditionally, fault dictionary access programs treated the possible detections in a fault syndrome as "wild cards", allowing the list of possibly detected faults to be merged into the list of hard detections. To access the fault dictionary, the fault syndrome observed on the tester is compared to all the fault syndromes predicted by the fault simulator. Both the failing vector number and all the failed output pins marked as hard detections ("1", "0") must be identical for a match to occur. Failed output pins marked as "X" in the fault dictionary will match either a failed or passing output on the tester, maintaining the accuracy of the fault dictionary in case the possibly detected fault affect all the outputs possible. If a predicted fault syndrome contains many (or all) "X"s, it will tend to match many observed fault syndromes. Therefore, a real fault syndrome seen on a unit under test matches one of the hard detections as well as one or more of the possible detections. This merging of hard and possible detections reduces the fault resolution capability of the fault dictionary by implicating an excessive number of possible faults. Previous automated test instrument systems which utilized fault dictionaries typically treated possible fault detection data ("possible detections") as either equivalent to a "hard" detection or equivalent to a non-detection. An improvement to this prior philosophy was to treat possible detects as UUT failures that may or may not be observed by the automated test instrument. An algorithm was used to merge both possible detections and hard detections of fault syndromes together and then access the data without penalizing mismatches on possible detections. This allowed more accuracy and better resolution compared to the earlier fault dictionaries, but at the same time, added more total faults to the dictionary, due to the inclusion of possible detections. The result was to increase the overall ambiguity of the fault dictionary.
There are well known methods to increase the diagnostic resolution of a fault dictionary by collecting fault syndromes beyond the first failure point (the first "failing vector number"). The test is run until the first failing vector, and the resulting fault syndrome is recorded. The test instrument is then programmed to run to the next failure (a technique not supported on some test instruments) and the fault syndrome at that vector number is recorded. The lists of faults for each syndrome are analyzed for faults common to both (by taking the intersection of the lists), with the other, non-common, faults rejected. If the resulting list does not increase the resolution sufficiently, the test is run to the next failure and the process is repeated. Although this procedure can increase the resolution, it depends on hardware support to run to an arbitrary failed vector. Also, the resulting lists of faults still have hard and possible detections in them, thus limiting the resolution. Lastly, it dramatically increases the fault simulation time to produce a fault dictionary with corresponding multiple failure fault data.
In conclusion, prior methods either: (1) penalized the use of possible detections, (2) did not differentiate between possible detections and hard detections, or (3) considered possible detections to be non-detections. The result of the prior methods' treatment of possible detects is such that the resultant diagnostic resolution provided is significantly less than optimal.
3. Solution to the Problem
Diagnostic resolution in a fault dictionary context is a function of the number of the faults for a given fault syndrome. The fewer faults existing for a given fault syndrome in a fault dictionary, the better the diagnostic resolution.
To achieve the goal of better diagnostic resolution, the method of the present invention uses possible fault detection data (possible detections) as well as hard fault detection data (hard detections) in a digital fault dictionary to locate failed devices on a unit under functional test. Because the method described herein separately treats the two types of detections, the method provides increased resolution in identifying faults as compared to prior methods. Prior methods typically merged the possible detections with hard detections, or weighted or penalized the possible detections as being less significant than hard detections.
By differentiating between "hard detections" and "possible detections" in the fault dictionary, a specific failed device in the UUT may be efficiently located. More specifically, a possible detection occurs when a fault in a device having state memory prevents the device from reaching a known state. Although a given device with state memory powers up in either a "1" or a "0" state, it is equally probable that either state is reached. To correctly simulate such a device, a simulator must assume that an unknown state exists until an applied signal (i.e., a test vector applied to the UUT) drives the device to a known state. Simulators typically assume that any device with state memory is in an unknown ("X") state until it is explicitly forced to a known state ("1" or "0").
In accordance with the present invention, a plurality of test cycles are run on a unit under test (UUT) using combinations of four different strategies in order to provide a number of different fault syndromes. A test cycle is the application of a number of test vectors by an automated test instrument to a UUT. The different fault syndromes are generated by forcing the devices on the UUT to different initial states between test cycles. If differing fault syndromes are obtained for more than one test vector number, the failing primary outputs are merged for all the differing syndromes with the lowest failing vector number, and only the fault dictionary possible detection data for that failing vector number is accessed. If the resulting resolution is not sufficient, that is, if more than an acceptable number of devices are indicated as being possibly faulty, then these possibly failed devices are put into a first list. The failing primary outputs are then merged for the next higher failing vector number, and the possible fault data is accessed for the next higher vector number to produce a second list of possibly failed devices. The intersection of the two lists is then determined, and if the resolution is still not sufficient, then the procedure is repeated, wherein the failing primary outputs in the next higher failed vector number are merged, and the list resulting from accessing the possible detection data is intersected with the result of the previous intersection of lists. The foregoing procedure is continued until the resolution is sufficient or until all fault syndromes have been analyzed.